from core.basic.skill import 技能
from core.basic.character import Character
from core.basic.skill import 主动技能, 被动技能


class 主动技能(主动技能):

    上车CDR = 1.0

    def 等效CD(self, **argv):
        # 武器类型 输出类型 额外CDR 手搓收益 恢复
        武器类型 = argv.get('武器类型', '')
        输出类型 = argv.get('输出类型', '')
        额外CDR = argv.get('额外CDR', 1.0)
        # 手搓收益 = argv.get('手搓收益', 1.0)
        面板显示 = argv.get('面板显示', False)

        cdr = self.手搓CD()

        return round(max(self.CD * self.CDR * 额外CDR / (self.恢复 if not 面板显示 else 1) * self.上车CDR * (self.武器CD系数(武器类型, 输出类型) - (cdr if not 面板显示 else 0)), self.CD * 0.3, 1), 1)


class 技能0(被动技能):
    名称 = '基础精通'
    倍率 = 1.0
    所在等级 = 1
    等级上限 = 200
    等级精通 = 110
    关联技能 = ['瞄准射击']

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(self.倍率 * (0.463 + 0.089 * self.等级), 5)


class 技能1(主动技能):
    名称 = '超频：压制'
    所在等级 = 5
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    电弧能量充能 = 20
    MP = [17, 178]
    data0 = [int(i) for i in [0, 1625, 1790, 1955, 2119, 2284, 2449, 2614, 2779, 2944, 3109, 3274, 3438, 3603, 3768, 3933, 4098, 4263, 4428, 4593, 4757, 4922, 5087, 5252, 5417, 5582, 5747, 5912, 6077, 6241, 6406, 6571, 6736, 6901, 7066,
                              7231, 7396, 7560, 7725, 7890, 8055, 8220, 8385, 8550, 8715, 8879, 9044, 9209, 9374, 9539, 9704, 9869, 10034, 10199, 10363, 10528, 10693, 10858, 11023, 11188, 11353, 11518, 11682, 11847, 12012, 12177, 12342, 12507, 12672, 12837, 13001]]
    hit0 = 1
    # 学习诺维尔计划：涅磐后减少1秒
    CD = 6.0 - 1.0
    TP成长 = 0.1
    TP上限 = 7


class 技能2(主动技能):
    名称 = '烟尘弹'
    所在等级 = 10
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    电弧能量充能 = 0
    MP = [300, 322]
    data0 = [int(i) for i in [0, 409, 451, 492, 534, 575, 617, 658, 700, 742, 783, 825, 866, 908, 949, 991, 1032, 1074, 1116, 1157, 1199, 1240, 1282, 1323, 1365, 1406, 1448, 1490, 1531, 1573,
                              1614, 1656, 1697, 1739, 1780, 1822, 1863, 1905, 1947, 1988, 2030, 2071, 2113, 2154, 2196, 2237, 2279, 2321, 2362, 2404, 2445, 2487, 2528, 2570, 2611, 2653, 2695, 2736, 2778, 2819, 2861]]
    hit0 = 6
    CD = 6
    TP成长 = 0.10
    TP上限 = 7


class 技能3(主动技能):
    名称 = '瞄准射击'
    所在等级 = 15
    等级上限 = 1
    基础等级 = 1
    data0 = [int(i) for i in [0, 130]]
    hit0 = 7
    CD = 3
    TP成长 = 0.10
    TP上限 = 5


class 技能4(被动技能):
    名称 = '合金战士自动手枪精通'
    所在等级 = 15
    等级上限 = 20
    基础等级 = 10

    def 物理攻击力倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.12 + 0.02 * self.等级, 3)


class 技能5(主动技能):
    名称 = '枪托强击'
    所在等级 = 20
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    电弧能量充能 = 0
    MP = [30, 315]
    data0 = [int(i) for i in [0, 4150, 4571, 4992, 5413, 5834, 6255, 6676, 7097, 7518, 7939, 8360, 8782, 9203, 9624, 10045, 10466, 10887, 11308, 11729, 12150, 12571, 12992, 13413, 13834, 14255, 14676, 15097, 15518, 15939, 16360, 16782, 17203, 17624, 18045,
                              18466, 18887, 19308, 19729, 20150, 20571, 20992, 21413, 21834, 22255, 22676, 23097, 23518, 23939, 24361, 24782, 25203, 25624, 26045, 26466, 26887, 27308, 27729, 28150, 28571, 28992, 29413, 29834, 30255, 30676, 31097, 31518, 31940, 32361, 32782, 33203]]
    hit0 = 1
    CD = 8
    TP成长 = 0.1
    TP上限 = 7


class 技能6(主动技能):
    名称 = '改装榴弹'
    所在等级 = 20
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    电弧能量充能 = 0
    MP = [30, 315]
    data0 = [int(i) for i in [0, 3132, 3449, 3767, 4085, 4403, 4720, 5038, 5356, 5674, 5991, 6309, 6627, 6944, 7262, 7580, 7898, 8215, 8533, 8851, 9169, 9486, 9804, 10122, 10440, 10757, 11075, 11393, 11711, 12028, 12346, 12664, 12982, 13299, 13617, 13935,
                              14253, 14570, 14888, 15206, 15524, 15841, 16159, 16477, 16795, 17112, 17430, 17748, 18066, 18383, 18701, 19019, 19337, 19654, 19972, 20290, 20608, 20925, 21243, 21561, 21878, 22196, 22514, 22832, 23149, 23467, 23785, 24103, 24420, 24738, 25056]]
    hit0 = 1
    CD = 6
    TP成长 = 0.1
    TP上限 = 7

    形态 = ["常规", "步行"]

    def 形态变更(self, 形态, char: Character):
        if 形态 == '' and len(self.形态) > 0:
            形态 = self.形态[0]
        if 形态 == "常规":
            self.上车CDR = 1.0
        if 形态 == "步行":
            self.上车CDR = 0.7


class 技能7(被动技能):
    名称 = '弱点扫描'
    所在等级 = 20
    等级上限 = 20
    基础等级 = 10

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1 + 0.02 * self.等级, 3)


class 技能8(主动技能):
    名称 = '超频：重盾保卫'
    所在等级 = 25
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    电弧能量充能 = 30
    MP = [43, 451]
    data0 = [int(i) for i in [0, 6325, 6967, 7608, 8250, 8892, 9534, 10175, 10817, 11459, 12100, 12742, 13384, 14026, 14667, 15309, 15951, 16593, 17234, 17876, 18518, 19159, 19801, 20443, 21085, 21726, 22368, 23010, 23651, 24293, 24935, 25577, 26218, 26860, 27502,
                              28143, 28785, 29427, 30069, 30710, 31352, 31994, 32636, 33277, 33919, 34561, 35202, 35844, 36486, 37128, 37769, 38411, 39053, 39694, 40336, 40978, 41620, 42261, 42903, 43545, 44186, 44828, 45470, 46112, 46753, 47395, 48037, 48679, 49320, 49962, 50604]]
    hit0 = 1
    CD = 6
    TP成长 = 0.1
    TP上限 = 7


class 技能9(被动技能):
    名称 = '改造烟尘弹'
    所在等级 = 25
    等级上限 = 1
    基础等级 = 1
    关联技能 = ['烟尘弹']

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.2, 3)


class 技能10(主动技能):
    名称 = '磁力手雷'
    所在等级 = 30
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    电弧能量充能 = 0
    MP = [122, 1024]
    data0 = [int(i) for i in [0, 2011, 2215, 2420, 2624, 2828, 3032, 3236, 3440, 3644, 3848, 4052, 4256, 4461, 4665, 4869, 5073, 5277, 5481, 5685, 5889, 6093, 6297, 6502, 6706, 6910, 7114, 7318, 7522, 7726, 7930, 8134, 8338, 8543, 8747, 8951,
                              9155, 9359, 9563, 9767, 9971, 10175, 10379, 10584, 10788, 10992, 11196, 11400, 11604, 11808, 12012, 12216, 12420, 12625, 12829, 13033, 13237, 13441, 13645, 13849, 14053, 14257, 14461, 14665, 14870, 15074, 15278, 15482, 15686, 15890, 16094]]
    hit0 = 3
    CD = 12
    TP成长 = 0.1
    TP上限 = 7

    形态 = ["常规", "步行"]

    def 形态变更(self, 形态, char: Character):
        if 形态 == '' and len(self.形态) > 0:
            形态 = self.形态[0]
        if 形态 == "常规":
            self.上车CDR = 1.0
        if 形态 == "步行":
            self.上车CDR = 0.7


class 技能11(主动技能):
    名称 = '三连霰弹'
    所在等级 = 30
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    电弧能量充能 = 0
    MP = [57, 598]
    data0 = [int(i) for i in [0, 1016, 1119, 1222, 1325, 1428, 1531, 1635, 1738, 1841, 1944, 2047, 2150, 2253, 2356, 2459, 2563, 2666, 2769, 2872, 2975, 3078, 3181, 3284, 3387, 3491, 3594, 3697, 3800, 3903, 4006, 4109, 4212, 4315,
                              4419, 4522, 4625, 4728, 4831, 4934, 5037, 5140, 5244, 5347, 5450, 5553, 5656, 5759, 5862, 5965, 6068, 6172, 6275, 6378, 6481, 6584, 6687, 6790, 6893, 6996, 7100, 7203, 7306, 7409, 7512, 7615, 7718, 7821, 7924, 8028, 8131]]
    hit0 = 1
    data1 = [int(i) for i in [0, 1524, 1679, 1833, 1988, 2143, 2297, 2452, 2607, 2761, 2916, 3071, 3225, 3380, 3535, 3689, 3844, 3999, 4153, 4308, 4463, 4617, 4772, 4927, 5081, 5236, 5391, 5545, 5700, 5855, 6009, 6164, 6319, 6473, 6628,
                              6783, 6937, 7092, 7247, 7402, 7556, 7711, 7866, 8020, 8175, 8330, 8484, 8639, 8794, 8948, 9103, 9258, 9412, 9567, 9722, 9876, 10031, 10186, 10340, 10495, 10650, 10804, 10959, 11114, 11268, 11423, 11578, 11732, 11887, 12042, 12196]]
    hit1 = 1
    data2 = [int(i) for i in [0, 2540, 2798, 3056, 3314, 3572, 3829, 4087, 4345, 4603, 4861, 5118, 5376, 5634, 5892, 6149, 6407, 6665, 6923, 7181, 7438, 7696, 7954, 8212, 8469, 8727, 8985, 9243, 9501, 9758, 10016, 10274, 10532, 10789, 11047, 11305,
                              11563, 11821, 12078, 12336, 12594, 12852, 13110, 13367, 13625, 13883, 14141, 14398, 14656, 14914, 15172, 15430, 15687, 15945, 16203, 16461, 16718, 16976, 17234, 17492, 17750, 18007, 18265, 18523, 18781, 19038, 19296, 19554, 19812, 20070, 20327]]
    hit2 = 1
    CD = 8
    TP成长 = 0.1
    TP上限 = 7

    形态 = ["常规", "步行"]

    def 形态变更(self, 形态, char: Character):
        if 形态 == '' and len(self.形态) > 0:
            形态 = self.形态[0]
        if 形态 == "常规":
            self.上车CDR = 1.0
        if 形态 == "步行":
            self.上车CDR = 0.7


class 技能12(主动技能):
    名称 = '爆裂飞踢'
    所在等级 = 35
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    电弧能量充能 = 0

    data0 = [int(i) for i in [0, 3233, 3561, 3890, 4218, 4546, 4874, 5202, 5530, 5858, 6186, 6514, 6842, 7170, 7498, 7826, 8154, 8483, 8811, 9139, 9467, 9795, 10123, 10451, 10779, 11107, 11435, 11763, 12091, 12419, 12748, 13076, 13404, 13732, 14060, 14388,
                              14716, 15044, 15372, 15700, 16028, 16356, 16684, 17012, 17341, 17669, 17997, 18325, 18653, 18981, 19309, 19637, 19965, 20293, 20621, 20949, 21277, 21606, 21934, 22262, 22590, 22918, 23246, 23574, 23902, 24230, 24558, 24886, 25214, 25542, 25870]]
    hit0 = 1
    data1 = [int(i) for i in [0, 1212, 1335, 1458, 1581, 1704, 1827, 1950, 2073, 2196, 2319, 2442, 2566, 2689, 2812, 2935, 3058, 3181, 3304, 3427, 3550, 3673, 3796, 3919, 4042, 4165, 4288, 4411, 4534, 4657, 4780, 4903, 5026, 5149,
                              5272, 5395, 5518, 5641, 5764, 5887, 6010, 6133, 6256, 6379, 6502, 6625, 6748, 6871, 6995, 7118, 7241, 7364, 7487, 7610, 7733, 7856, 7979, 8102, 8225, 8348, 8471, 8594, 8717, 8840, 8963, 9086, 9209, 9332, 9455, 9578, 9701]]
    hit1 = 4
    CD = 15
    TP成长 = 0.1
    TP上限 = 5

    MP = [122, 1024]
    无色消耗 = 1

    形态 = ["常规", "步行"]

    def 形态变更(self, 形态, char: Character):
        if 形态 == '' and len(self.形态) > 0:
            形态 = self.形态[0]
        if 形态 == "常规":
            self.上车CDR = 1.0
        if 形态 == "步行":
            self.上车CDR = 0.7


class 技能13(主动技能):
    名称 = '超频：机械冲撞'
    所在等级 = 35
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    电弧能量充能 = 30

    # 撞击
    data0 = [int(i) for i in [0, 4707, 5185, 5662, 6140, 6617, 7095, 7573, 8050, 8528, 9005, 9483, 9961, 10438, 10916, 11393, 11871, 12348, 12826, 13304, 13781, 14259, 14736, 15214, 15691, 16169, 16647, 17124, 17602, 18079, 18557, 19035, 19512, 19990, 20467,
                              20945, 21422, 21900, 22378, 22855, 23333, 23810, 24288, 24766, 25243, 25721, 26198, 26676, 27153, 27631, 28109, 28586, 29064, 29541, 30019, 30497, 30974, 31452, 31929, 32407, 32884, 33362, 33840, 34317, 34795, 35272, 35750, 36228, 36705, 37183, 37660]]
    hit0 = 1
    # 炮
    data1 = [int(i) for i in [0, 3138, 3456, 3775, 4093, 4411, 4730, 5048, 5367, 5685, 6003, 6322, 6640, 6959, 7277, 7595, 7914, 8232, 8551, 8869, 9187, 9506, 9824, 10142, 10461, 10779, 11098, 11416, 11734, 12053, 12371, 12690, 13008, 13326, 13645, 13963,
                              14281, 14600, 14918, 15237, 15555, 15873, 16192, 16510, 16829, 17147, 17465, 17784, 18102, 18421, 18739, 19057, 19376, 19694, 20012, 20331, 20649, 20968, 21286, 21604, 21923, 22241, 22560, 22878, 23196, 23515, 23833, 24152, 24470, 24788, 25107]]
    hit1 = 1
    CD = 13
    TP成长 = 0.1
    TP上限 = 5
    是否有护石 = 1

    MP = [122, 1024]
    无色消耗 = 1

    def 装备护石(self):
        self.power0 = 1+0.91+0.32
        self.hit1 = 0


class 技能14(主动技能):
    名称 = '战略轰炸'
    所在等级 = 40
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    电弧能量充能 = 0

    # 榴弹
    data0 = [int(i) for i in [0, 1647, 1814, 1981, 2149, 2316, 2483, 2650, 2817, 2984, 3152, 3319, 3486, 3653, 3820, 3987, 4155, 4322, 4489, 4656, 4823, 4990, 5157, 5325, 5492, 5659, 5826, 5993, 6160, 6328, 6495, 6662, 6829, 6996, 7163, 7330,
                              7498, 7665, 7832, 7999, 8166, 8333, 8501, 8668, 8835, 9002, 9169, 9336, 9504, 9671, 9838, 10005, 10172, 10339, 10506, 10674, 10841, 11008, 11175, 11342, 11509, 11677, 11844, 12011, 12178, 12345, 12512, 12679, 12847, 13014, 13181]]
    hit0 = 3
    # 手榴弹
    data1 = [int(i) for i in [0, 2471, 2722, 2972, 3223, 3474, 3725, 3975, 4226, 4477, 4728, 4978, 5229, 5480, 5731, 5981, 6232, 6483, 6733, 6984, 7235, 7486, 7736, 7987, 8238, 8489, 8739, 8990, 9241, 9492, 9742, 9993, 10244, 10494, 10745, 10996,
                              11247, 11497, 11748, 11999, 12250, 12500, 12751, 13002, 13253, 13503, 13754, 14005, 14256, 14506, 14757, 15008, 15258, 15509, 15760, 16011, 16261, 16512, 16763, 17014, 17264, 17515, 17766, 18017, 18267, 18518, 18769, 19019, 19270, 19521, 19772]]
    hit1 = 3
    CD = 20
    TP成长 = 0.1
    TP上限 = 5
    是否有护石 = 1

    MP = [162, 1360]
    无色消耗 = 1

    def 装备护石(self, 类型):
        self.hit0 += 2
        self.power0 = 0.89
        self.power1 = 1.29
        self.CDR *= 0.9


class 技能15(主动技能):
    名称 = '雷达扫射'
    所在等级 = 45
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    电弧能量充能 = 0

    data0 = [int(i) for i in [0, 1446, 1593, 1740, 1886, 2033, 2180, 2327, 2474, 2620, 2767, 2914, 3061, 3207, 3354, 3501, 3648, 3794, 3941, 4088, 4235, 4382, 4528, 4675, 4822, 4969, 5115, 5262, 5409, 5556, 5702, 5849, 5996, 6143, 6289,
                              6436, 6583, 6730, 6877, 7023, 7170, 7317, 7464, 7610, 7757, 7904, 8051, 8197, 8344, 8491, 8638, 8784, 8931, 9078, 9225, 9372, 9518, 9665, 9812, 9959, 10105, 10252, 10399, 10546, 10692, 10839, 10986, 11133, 11279, 11426, 11573]]
    hit0 = 15

    CD = 40
    TP成长 = 0.1
    TP上限 = 5
    是否有护石 = 1

    MP = [285, 2394]
    无色消耗 = 2

    形态 = ["常规", "步行"]

    def 形态变更(self, 形态, char: Character):
        if 形态 == '' and len(self.形态) > 0:
            形态 = self.形态[0]
        if 形态 == "常规":
            self.上车CDR = 1.0
        if 形态 == "步行":
            self.上车CDR = 0.7

    def 装备护石(self):
        self.倍率 = 1.31
        self.CDR *= 0.95


class 技能16(被动技能):
    名称 = '机体复原'
    所在等级 = 48
    等级上限 = 50
    学习间隔 = 3
    等级精通 = 40
    关联技能 = ['所有']

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.00 + 0.02 * self.等级, 3)


class 技能17(主动技能):
    名称 = '电弧能量释放'
    所在等级 = 48
    等级上限 = 1
    基础等级 = 1
    data0 = [int(i) for i in [0, 8816, 10222, 11628, 13033, 14439, 15844, 17250, 18656, 20061, 21467, 22872, 24278, 25684, 27089, 28495, 29900, 31306, 32712, 34117, 35523, 36928, 38334, 39740, 41145, 42551, 43956, 45362, 46768, 48173, 49579, 50984, 52390, 53796, 55201,
                              56607, 58012, 59418, 60824, 62229, 63635, 65040, 66446, 67852, 69257, 70663, 72068, 73474, 74880, 76285, 77691, 79096, 80502, 81908, 83313, 84719, 86124, 87530, 88936, 90341, 91747, 93152, 94558, 95964, 97369, 98775, 100180, 101586, 102992, 104397, 105803]]
    hit0 = 1
    CD = 1


class 技能18(主动技能):
    名称 = '超频：全领域攻击'
    所在等级 = 50
    等级上限 = 50
    学习间隔 = 5
    等级精通 = 40
    电弧能量充能 = 100

    data0 = [int(i) for i in [0, 6805, 8383, 9961, 11538, 13116, 14694, 16272, 17850, 19428, 21006, 22584, 24162, 25740, 27318, 28896, 30474, 32052, 33630, 35208, 36786, 38364, 39942, 41520, 43098, 44676, 46254, 47832, 49410, 50988, 52566, 54144, 55722, 57300, 58878,
                              60456, 62034, 63612, 65190, 66768, 68346, 69924, 71502, 73080, 74658, 76236, 77814, 79392, 80970, 82548, 84126, 85704, 87282, 88860, 90438, 92016, 93594, 95172, 96750, 98328, 99905, 101483, 103061, 104639, 106217, 107795, 109373, 110951, 112529, 114107, 115685]]
    hit0 = 1
    data1 = [int(i) for i in [0, 3402, 4191, 4980, 5769, 6558, 7347, 8136, 8925, 9714, 10503, 11292, 12081, 12870, 13659, 14448, 15237, 16026, 16815, 17604, 18393, 19182, 19971, 20760, 21549, 22338, 23127, 23916, 24705, 25494, 26283, 27072, 27861, 28650, 29439,
                              30228, 31017, 31806, 32595, 33384, 34173, 34962, 35751, 36540, 37329, 38118, 38907, 39696, 40485, 41274, 42063, 42852, 43641, 44430, 45219, 46008, 46797, 47586, 48375, 49164, 49952, 50741, 51530, 52319, 53108, 53897, 54686, 55475, 56264, 57053, 57842]]
    hit1 = 4
    data2 = [int(i) for i in [0, 3402, 4191, 4980, 5769, 6558, 7347, 8136, 8925, 9714, 10503, 11292, 12081, 12870, 13659, 14448, 15237, 16026, 16815, 17604, 18393, 19182, 19971, 20760, 21549, 22338, 23127, 23916, 24705, 25494, 26283, 27072, 27861, 28650, 29439,
                              30228, 31017, 31806, 32595, 33384, 34173, 34962, 35751, 36540, 37329, 38118, 38907, 39696, 40485, 41274, 42063, 42852, 43641, 44430, 45219, 46008, 46797, 47586, 48375, 49164, 49952, 50741, 51530, 52319, 53108, 53897, 54686, 55475, 56264, 57053, 57842]]
    hit2 = 1
    data3 = [int(i) for i in [0, 34025, 41915, 49805, 57694, 65584, 73474, 81364, 89254, 97144, 105034, 112924, 120814, 128704, 136594, 144484, 152373, 160263, 168153, 176043, 183933, 191823, 199713, 207603, 215493, 223383, 231273, 239162, 247052, 254942, 262832, 270722, 278612, 286502, 294392,
                              302282, 310172, 318062, 325951, 333841, 341731, 349621, 357511, 365401, 373291, 381181, 389071, 396961, 404851, 412740, 420630, 428520, 436410, 444300, 452190, 460080, 467970, 475860, 483750, 491640, 499529, 507419, 515309, 523199, 531089, 538979, 546869, 554759, 562649, 570539, 578429]]
    hit3 = 1
    CD = 145

    MP = [1065, 8946]
    无色消耗 = 5


class 技能19(主动技能):
    名称 = '超频：电流闪踢'
    所在等级 = 60
    等级上限 = 50
    学习间隔 = 2
    等级精通 = 40
    电弧能量充能 = 50

    data0 = [int(i) for i in [0, 17383, 19147, 20910, 22674, 24437, 26201, 27964, 29728, 31491, 33255, 35018, 36782, 38546, 40309, 42073, 43836, 45600, 47363, 49127, 50890, 52654, 54417, 56181, 57945, 59708, 61472, 63235, 64999, 66762, 68526, 70289, 72053, 73816, 75580, 77344,
                              79107, 80871, 82634, 84398, 86161, 87925, 89688, 91452, 93215, 94979, 96742, 98506, 100270, 102033, 103797, 105560, 107324, 109087, 110851, 112614, 114378, 116141, 117905, 119669, 121432, 123196, 124959, 126723, 128486, 130250, 132013, 133777, 135540, 137304, 139068]]
    hit0 = 1
    CD = 25
    TP成长 = 0.1
    TP上限 = 5
    是否有护石 = 1

    MP = [356, 996]
    无色消耗 = 1

    def 装备护石(self):
        self.倍率 = 1.31
        self.CDR *= 0.9


class 技能20(主动技能):
    名称 = '堡垒轰击'
    所在等级 = 70
    等级上限 = 50
    学习间隔 = 2
    等级精通 = 40
    电弧能量充能 = 0

    data0 = [int(i) for i in [0, 1314, 1447, 1580, 1714, 1847, 1980, 2114, 2247, 2380, 2513, 2647, 2780, 2913, 3047, 3180, 3313, 3447, 3580, 3713, 3847, 3980, 4113, 4247, 4380, 4513, 4647, 4780, 4913, 5047, 5180, 5313, 5446, 5580,
                              5713, 5846, 5980, 6113, 6246, 6380, 6513, 6646, 6780, 6913, 7046, 7180, 7313, 7446, 7580, 7713, 7846, 7980, 8113, 8246, 8379, 8513, 8646, 8779, 8913, 9046, 9179, 9313, 9446, 9579, 9713, 9846, 9979, 10113, 10246, 10379, 10513]]
    hit0 = 30
    CD = 50
    TP成长 = 0.1
    TP上限 = 5
    是否有护石 = 1

    MP = [732, 1537]
    无色消耗 = 2

    def 装备护石(self):
        self.倍率 *= 0.7
        self.CD = 25


class 技能21(主动技能):
    名称 = 'AT-SO步行者'
    备注 = '持续输出20s/30s'
    所在等级 = 75
    等级上限 = 50
    学习间隔 = 2
    等级精通 = 40
    电弧能量充能 = 0

    # 自动
    data0 = [int(i) for i in [0, 1022, 1126, 1229, 1333, 1437, 1541, 1644, 1748, 1852, 1956, 2059, 2163, 2267, 2370, 2474, 2578, 2682, 2785, 2889, 2993, 3097, 3200, 3304, 3408, 3511, 3615, 3719, 3823, 3926, 4030, 4134, 4238, 4341,
                              4445, 4549, 4652, 4756, 4860, 4964, 5067, 5171, 5275, 5379, 5482, 5586, 5690, 5793, 5897, 6001, 6105, 6208, 6312, 6416, 6520, 6623, 6727, 6831, 6934, 7038, 7142, 7246, 7349, 7453, 7557, 7661, 7764, 7868, 7972, 8075, 8179]]
    hit0 = 28*4
    # 手动
    data1 = [int(i) for i in [0, 642, 708, 773, 838, 903, 969, 1034, 1099, 1164, 1230, 1295, 1360, 1425, 1490, 1556, 1621, 1686, 1751, 1817, 1882, 1947, 2012, 2078, 2143, 2208, 2273, 2338, 2404, 2469, 2534, 2599, 2665, 2730,
                              2795, 2860, 2926, 2991, 3056, 3121, 3186, 3252, 3317, 3382, 3447, 3513, 3578, 3643, 3708, 3774, 3839, 3904, 3969, 4034, 4100, 4165, 4230, 4295, 4361, 4426, 4491, 4556, 4622, 4687, 4752, 4817, 4882, 4948, 5013, 5078, 5143]]
    hit1 = 0
    CD = 40
    CD_min = 20
    是否有护石 = 1

    MP = [606, 4696]
    无色消耗 = 3

    形态 = ["自动", "手动"]

    def 形态变更(self, 形态, char: Character):
        if 形态 == '' and len(self.形态) > 0:
            形态 = self.形态[0]
        if 形态 == "自动":
            self.power0 = 1
            self.power1 = 0
        if 形态 == "手动":
            self.power0 = 0
            self.power1 = 1

    def 装备护石(self):
        self.CD_min = 30
        # 增加持续时间
        self.hit0 *= 30/20
        self.hit1 *= 30/20
        # 自爆
        self.data2 = self.data0
        self.hit2 = 5.6


class 技能22(被动技能):
    名称 = '躯体重塑'
    所在等级 = 75
    等级上限 = 50
    学习间隔 = 3
    等级精通 = 40

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.22 + 0.02 * self.等级, 3)


class 技能23(主动技能):
    名称 = '炎神攻城炮'
    所在等级 = 80
    等级上限 = 50
    学习间隔 = 2
    等级精通 = 40
    电弧能量充能 = 0

    data0 = [int(i) for i in [0, 67684, 74550, 81417, 88283, 95150, 102017, 108883, 115750, 122616, 129483, 136349, 143216, 150082, 156949, 163815, 170682, 177548, 184415, 191281, 198148, 205014, 211881, 218747, 225614, 232481, 239347, 246214, 253080, 259947, 266813, 273680, 280546, 287413, 294279,
                              301146, 308012, 314879, 321745, 328612, 335478, 342345, 349212, 356078, 362945, 369811, 376678, 383544, 390411, 397277, 404144, 411010, 417877, 424743, 431610, 438476, 445343, 452210, 459076, 465943, 472809, 479676, 486542, 493409, 500275, 507142, 514008, 520875, 527741, 534608, 541474]]
    hit0 = 1
    CD = 45
    是否有护石 = 1

    MP = [877, 6577]
    无色消耗 = 5

    def 装备护石(self):
        self.倍率 = 1.25
        self.CDR *= 0.9


class 技能24(主动技能):
    名称 = '超频：伊奎利斯-MR'
    所在等级 = 85
    等级上限 = 50
    学习间隔 = 5
    等级精通 = 40
    电弧能量充能 = 100

    data0 = [int(i) for i in [0, 7802, 9611, 11420, 13230, 15039, 16848, 18658, 20467, 22276, 24085, 25895, 27704, 29513, 31322, 33132, 34941, 36750, 38559, 40369, 42178, 43987, 45797, 47606, 49415, 51224, 53034, 54843, 56652, 58461, 60271, 62080, 63889, 65698, 67508, 69317,
                              71126, 72936, 74745, 76554, 78363, 80173, 81982, 83791, 85600, 87410, 89219, 91028, 92837, 94647, 96456, 98265, 100074, 101884, 103693, 105502, 107312, 109121, 110930, 112739, 114549, 116358, 118167, 119976, 121786, 123595, 125404, 127213, 129023, 130832, 132641]]
    hit0 = 20
    CD = 180

    MP = [2484, 4968]
    无色消耗 = 10


class 技能25(主动技能):
    名称 = '超频：音速瞬杀'
    所在等级 = 95
    等级上限 = 50
    学习间隔 = 2
    等级精通 = 40
    电弧能量充能 = 70

    data0 = [int(i) for i in [0, 6349, 6993, 7637, 8281, 8926, 9570, 10214, 10858, 11502, 12146, 12791, 13435, 14079, 14723, 15367, 16011, 16655, 17300, 17944, 18588, 19232, 19876, 20520, 21165, 21809, 22453, 23097, 23741, 24385, 25029, 25674, 26318, 26962, 27606,
                              28250, 28894, 29538, 30183, 30827, 31471, 32115, 32759, 33403, 34048, 34692, 35336, 35980, 36624, 37268, 37912, 38557, 39201, 39845, 40489, 41133, 41777, 42422, 43066, 43710, 44354, 44998, 45642, 46286, 46931, 47575, 48219, 48863, 49507, 50151, 50796]]
    hit0 = 4
    data1 = [int(i) for i in [0, 38097, 41961, 45826, 49691, 53556, 57421, 61286, 65151, 69016, 72881, 76746, 80611, 84475, 88340, 92205, 96070, 99935, 103800, 107665, 111530, 115395, 119260, 123125, 126990, 130854, 134719, 138584, 142449, 146314, 150179, 154044, 157909, 161774, 165639, 169504,
                              173368, 177233, 181098, 184963, 188828, 192693, 196558, 200423, 204288, 208153, 212018, 215883, 219747, 223612, 227477, 231342, 235207, 239072, 242937, 246802, 250667, 254532, 258397, 262261, 266126, 269991, 273856, 277721, 281586, 285451, 289316, 293181, 297046, 300911, 304776]]
    hit1 = 1
    data2 = [int(i) for i in [0, 63495, 69936, 76378, 82819, 89261, 95702, 102144, 108585, 115027, 121468, 127910, 134351, 140793, 147234, 153676, 160117, 166559, 173000, 179442, 185883, 192325, 198766, 205208, 211650, 218091, 224533, 230974, 237416, 243857, 250299, 256740, 263182, 269623, 276065,
                              282506, 288948, 295389, 301831, 308272, 314714, 321155, 327597, 334038, 340480, 346921, 353363, 359805, 366246, 372688, 379129, 385571, 392012, 398454, 404895, 411337, 417778, 424220, 430661, 437103, 443544, 449986, 456427, 462869, 469310, 475752, 482193, 488635, 495076, 501518, 507960]]
    hit2 = 1
    CD = 60

    MP = [1169, 8769]
    无色消耗 = 7


class 技能26(被动技能):
    名称 = '诺维尔计划：涅磐'
    所在等级 = 95
    等级上限 = 50
    学习间隔 = 3
    等级精通 = 40

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.18 + 0.02 * self.等级, 5)


class 技能27(主动技能):
    名称 = '超频：末世终结之战'
    所在等级 = 100
    等级上限 = 50
    学习间隔 = 5
    等级精通 = 40
    电弧能量充能 = 100

    data0 = [int(i) for i in [0, 41744, 51423, 61103, 70783, 80463, 90142, 99822, 109502, 119182, 128861, 138541, 148221, 157901, 167581, 177260, 186940, 196620, 206300, 215979, 225659, 235339, 245019, 254698, 264378, 274058, 283738, 293418, 303097, 312777, 322457, 332137, 341816, 351496, 361176,
                              370856, 380536, 390215, 399895, 409575, 419255, 428934, 438614, 448294, 457974, 467653, 477333, 487013, 496693, 506373, 516052, 525732, 535412, 545092, 554771, 564451, 574131, 583811, 593491, 603170, 612850, 622530, 632210, 641889, 651569, 661249, 670929, 680608, 690288, 699968, 709648]]
    hit0 = 1
    data1 = [int(i) for i in [0, 5218, 6427, 7637, 8847, 10057, 11267, 12477, 13687, 14897, 16107, 17317, 18527, 19737, 20947, 22157, 23367, 24577, 25787, 26997, 28207, 29417, 30627, 31837, 33047, 34257, 35467, 36677, 37887, 39097, 40307, 41517, 42727, 43937, 45147,
                              46357, 47567, 48776, 49986, 51196, 52406, 53616, 54826, 56036, 57246, 58456, 59666, 60876, 62086, 63296, 64506, 65716, 66926, 68136, 69346, 70556, 71766, 72976, 74186, 75396, 76606, 77816, 79026, 80236, 81446, 82656, 83866, 85076, 86286, 87496, 88706]]
    hit1 = 12
    data2 = [int(i) for i in [0, 20872, 25711, 30551, 35391, 40231, 45071, 49911, 54751, 59591, 64430, 69270, 74110, 78950, 83790, 88630, 93470, 98310, 103150, 107989, 112829, 117669, 122509, 127349, 132189, 137029, 141869, 146709, 151548, 156388, 161228, 166068, 170908, 175748, 180588, 185428,
                              190268, 195107, 199947, 204787, 209627, 214467, 219307, 224147, 228987, 233826, 238666, 243506, 248346, 253186, 258026, 262866, 267706, 272546, 277385, 282225, 287065, 291905, 296745, 301585, 306425, 311265, 316105, 320944, 325784, 330624, 335464, 340304, 345144, 349984, 354824]]
    hit2 = 3
    data3 = [int(i) for i in [0, 208720, 257118, 305517, 353916, 402315, 450714, 499113, 547512, 595910, 644309, 692708, 741107, 789506, 837905, 886304, 934702, 983101, 1031500, 1079899, 1128298, 1176697, 1225096, 1273494, 1321893, 1370292, 1418691, 1467090, 1515489, 1563888, 1612287, 1660685, 1709084, 1757483, 1805882, 1854281,
                              1902680, 1951078, 1999477, 2047876, 2096275, 2144674, 2193073, 2241472, 2289870, 2338270, 2386668, 2435067, 2483466, 2531865, 2580264, 2628663, 2677062, 2725460, 2773859, 2822258, 2870657, 2919056, 2967455, 3015853, 3064252, 3112651, 3161050, 3209449, 3257848, 3306247, 3354645, 3403044, 3451443, 3499842, 3548241]]
    hit3 = 1
    data4 = [int(i) for i in [0, 41744, 51423, 61103, 70783, 80463, 90142, 99822, 109502, 119182, 128861, 138541, 148221, 157901, 167581, 177260, 186940, 196620, 206300, 215979, 225659, 235339, 245019, 254698, 264378, 274058, 283738, 293418, 303097, 312777, 322457, 332137, 341816, 351496, 361176,
                              370856, 380536, 390215, 399895, 409575, 419255, 428934, 438614, 448294, 457974, 467653, 477333, 487013, 496693, 506373, 516052, 525732, 535412, 545092, 554771, 564451, 574131, 583811, 593491, 603170, 612850, 622530, 632210, 641889, 651569, 661249, 670929, 680608, 690288, 699968, 709648]]
    hit4 = 1
    CD = 290.0

    MP = [4002, 8004]
    无色消耗 = 15


class classChange(Character):
    def __init__(self):
        self.实际名称 = 'assault'
        self.名称 = '重霄·合金战士'
        self.角色 = '神枪手(男)'
        self.角色类型 = '输出'
        self.职业 = '合金战士'
        self.武器选项 = ['自动手枪']
        self.输出类型选项 = ['物理百分比']
        self.防具精通属性 = ['力量']
        self.类型 = '物理百分比'
        self.武器类型 = '自动手枪'
        self.防具类型 = '轻甲'
        技能列表 = []
        技能序号 = {}
        i = 0
        while i >= 0:
            try:
                tem = eval('技能'+str(i)+'()')
                tem.基础等级计算()
                技能序号[tem.名称] = i
                技能列表.append(tem)
                i += 1
            except:
                i = -1
        self.技能栏 = 技能列表
        self.技能序号 = 技能序号
        self.buff = 2.00

        super().__init__()

    def 职业特殊计算(self):
        电弧能量释放 = self.get_skill_by_name('电弧能量释放')
        电弧能量释放.等级上限 = 50
        电弧能量释放.等级 = self.get_skill_by_name('机体复原').等级
